package com.zx.mes.hyl.base.operation;

/**
 * 特殊操作符
 *
 * @author 华云龙
 * @date 2018-11-29
 */
public class Operation {

    public static void main(String []args){
        boolean flag = Boolean.FALSE;
        /// flag = flag || true
        System.out.println(flag || true);
        flag |= true;
        System.out.println(flag);
        int n = 1;
        /// || 后面的不会执行
        if (true || ++n>0) {
            System.out.println("[true] n:"+n);
        }
        System.out.println("[true || ++n>0] n:"+n);

        /// || 后面的会执行
        if (false || ++n>0) {
            System.out.println("[true] n:"+n);
        }
        System.out.println("[false || ++n>0] n:"+n);
        /// | 不管第一个是不是true,后面的都会执行
        int m = 1;
        if (true | ++m>0) {
            System.out.println("[true] m:"+m);
        }
        System.out.println("[true | ++m>0] jj:"+m);
        int jj = 1;
        if (false | ++jj > 0) {
            System.out.println("[true] jj:"+jj);
        }
        System.out.println("[false | ++jj > 0] jj:"+jj);

        System.out.println("----------------------------");
        int j = 1;
        /// &&  第一个为true 两边都会执行
        if (true && j++ > 0) {
            System.out.println("[true] j:"+j);
        }
        System.out.println("[true && j++ > 0] j:"+j);

        int k = 1;
        /// &&  第一个为true 两边都会执行
        if (false && k++ > 0) {
            System.out.println("[false] k:"+k);
        }
        System.out.println("[false && k++ > 0] k:"+k);

        int cc = 1;
        if (true & cc++ > 0) {
            System.out.println("[true] cc:"+cc);
        }
        System.out.println("[true & cc++ > 0] cc:"+cc);

        int ccc = 1;
        if (true & ccc++ < 0) {
            System.out.println("[true] ccc:"+ccc);
        }
        System.out.println("[true & ccc++ < 0] ccc:"+ccc);

        int dd = 1;
        if (false & dd++ > 0) {
            System.out.println("[false] dd:"+dd);
        }
        System.out.println("[false & dd++ > 0] dd:"+dd);

        System.out.println("`````````````````````````````");
        System.out.println("总结:单个 |或& 两边都要运算; || 当左边为true时,右边不执行,&& 当左边为false时,右边不执行");

        boolean mark = false;
        /// mark = mark && true
        mark &= true;
        //^=(异或):相同为假，不同为真。
        /// mark = mark ^ true
        mark ^= true;
    }
}
